package com.deco.service.product;

import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.deco.domain.vo.product.PartsCategoryVo;
import com.deco.domain.vo.product.PartsInfoImageVo;
import com.deco.domain.vo.product.PartsInfoVo;
import com.deco.logic.product.PartsCategoryLogic;
import com.deco.logic.product.PartsInfoImageLogic;
import com.deco.logic.product.PartsInfoLogic;
import com.deco.service.CommonService;
import com.free.common.vo.PageResponseVo;
import com.free.common.vo.PageSearchVo;
import com.free.common.vo.ResultModel;

@Service
public class PartsInfoService extends CommonService {
	   /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/
    
    @Autowired
    private PartsInfoLogic partsInfoLogic;
    
    @Autowired
    PartsCategoryLogic partsCategoryLogic;
    
    @Autowired
    PartsInfoImageLogic partsInfoImageLogic;
    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    
    public PartsInfoVo getPartsInfo(int id){
    	return partsInfoLogic.getPartsInfo(id);
    }


    public ResultModel save(PartsInfoVo vo){
    	Date current = new Date();
		int currentUserId = getCurrentUserId();
    	if(vo.getId() == null || vo.getId() == 0){
    		vo.setCreateBy(currentUserId);
    		vo.setCreateTime(current);
    		vo.setUpdateBy(currentUserId);
    		vo.setUpdateTime(current);
    		partsInfoLogic.create(vo);
    	}
    	else{
    		vo.setUpdateBy(currentUserId);
    		vo.setUpdateTime(current);
    		partsInfoLogic.update(vo);
    	}
    	return ResultModel.success();
    }

	public ResultModel delete(int id) {
		partsInfoLogic.delete(id);
	  	return ResultModel.success();
	}

	public ResultModel batchDelete(Integer[] ids) {
		if(ids == null || ids.length == 0){
    		return ResultModel.success();
		}
    	int res = partsInfoLogic.batchDelete(ids);
    	if(res > 0){
    		return ResultModel.success();
		}
		return ResultModel.failure();
	}

	public PageResponseVo<PartsInfoVo> pageInfo(
			PageSearchVo<PartsInfoVo> condition) {
		
		 PageResponseVo<PartsInfoVo> pageResponse = partsInfoLogic.getPageInfo(condition);
		 List<PartsInfoVo> partsInfoList = pageResponse.getList();
	
		 if(partsInfoList != null && partsInfoList.size() > 0){
			 List<PartsCategoryVo> categoryList =  partsCategoryLogic.getAll();
			 for(PartsInfoVo vo : partsInfoList){
				 
				 //配件类别
				 if(categoryList != null && categoryList.size() > 0){
					 for(PartsCategoryVo partsCate: categoryList){
						 if(vo.getCategoryId() == partsCate.getId()){
							 vo.setCategoryName(partsCate.getCategoryName());
						 }
					 }
				 }
				 if(StringUtils.isBlank(vo.getCategoryName())){
					 vo.setCategoryName("");
				 }
				 
				 //配件图片
				 PartsInfoImageVo partsInfoImageVo = new PartsInfoImageVo();
				 partsInfoImageVo.setPartsInfoId(vo.getId());
				 vo.setImageList(partsInfoImageLogic.selectList(partsInfoImageVo));
			 }
		 }
		 return pageResponse;
	}

	public List<PartsInfoVo> getAll() {
		return partsInfoLogic.getAll();
	}

	public List<PartsInfoVo> getPartsInfoByConditionForFront(PartsInfoVo vo){
    	return partsInfoLogic.selectInfoListForFront(vo);
	}

	public Integer getMaxSort(){
    	return partsInfoLogic.getMaxSort();
	}
    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/

}
